package com.ling.recipeassistant

import android.app.Application
import androidx.room.RoomDatabase
import androidx.sqlite.db.SupportSQLiteDatabase
import com.ling.recipeassistant.data.local.AppDatabase
import com.ling.recipeassistant.data.local.SampleData
import dagger.hilt.android.HiltAndroidApp
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.firstOrNull
import kotlinx.coroutines.launch
import javax.inject.Inject

@HiltAndroidApp
class RecipeAssistantApp : Application() {
    
    @Inject
    lateinit var database: AppDatabase
    
    override fun onCreate() {
        super.onCreate()
        
        // 预填充数据库
        prePopulateDatabase()
    }
    
    private fun prePopulateDatabase() {
        val callback = object : RoomDatabase.Callback() {
            override fun onCreate(db: SupportSQLiteDatabase) {
                super.onCreate(db)
                CoroutineScope(Dispatchers.IO).launch {
                    // 插入示例数据
                    database.recipeDao().insertRecipes(SampleData.sampleRecipes)
                }
            }
        }
        
        // 注意：这里我们只是设置回调，实际的数据库创建在DatabaseModule中处理
        // 为了确保数据被预填充，我们直接在这里插入数据
        CoroutineScope(Dispatchers.IO).launch {
            try {
                // 检查数据库是否为空，如果为空则插入示例数据
                val existingRecipes = database.recipeDao().getAllRecipes().firstOrNull() ?: emptyList()
                if (existingRecipes.isEmpty()) {
                    database.recipeDao().insertRecipes(SampleData.sampleRecipes)
                }
            } catch (e: Exception) {
                // 如果数据库还没有创建，忽略错误
            }
        }
    }
} 